package com.smartinput.device.query.dao

import com.smartinput.device.query.data.DeviceEntry
import org.apache.ibatis.annotations.Mapper
import org.apache.ibatis.annotations.Param
import java.time.LocalDateTime

@Mapper
interface DeviceDao {

    /**
     * 根据设备ID查询设备
     */
    fun findByDeviceId(@Param("deviceId") deviceId: String): DeviceEntry?

    /**
     * 根据用户ID查询设备列表
     */
    fun findByUserId(@Param("userId") userId: String): List<DeviceEntry>

    /**
     * 查询匿名设备（userId为null的设备）
     */
    fun findByUserIdIsNull(): List<DeviceEntry>

    /**
     * 根据用户ID和在线状态查询设备
     */
    fun findByUserIdAndOnline(@Param("userId") userId: String, @Param("online") online: Boolean): List<DeviceEntry>

    /**
     * 查询在线匿名设备
     */
    fun findByUserIdIsNullAndOnline(@Param("online") online: Boolean): List<DeviceEntry>

    /**
     * 根据Socket ID查询设备
     */
    fun findBySocketId(@Param("socketId") socketId: String): DeviceEntry?

    /**
     * 根据在线状态查询设备
     */
    fun findByOnline(@Param("online") online: Boolean): List<DeviceEntry>

    /**
     * 检查设备ID是否存在
     */
    fun existsByDeviceId(@Param("deviceId") deviceId: String): Boolean

}